package cn.saltice.idempotence.idem.store;

import cn.saltice.idempotence.idem.enums.ReadWriteTypeEnum;
import cn.saltice.idempotence.idem.enums.IdempotentStorageTypeEnum;

import java.util.concurrent.TimeUnit;

/**
 * @program: idempotence
 * @description: 基础存储
 * @author: Mr.Liu
 * @create: 2020-10-03 21:33
 **/

public interface IdempotentStorage<T> {
    String COLL_NAME = "idempotent_record";

    /**
     * 存储类型
     * @return
     */
    IdempotentStorageTypeEnum type();
    /**
     * 根据 幂等key 获取 value
     * @param key
     * @return
     */
    String getValue(String key);

    /**
     * cas 设置 key 一级存储 成功返回true，失败返回false
     * @param key 键
     * @param value 值
     * @param expireTime 存储过期时间
     * @param timeUnit 存储时间单位
     * @return
     */
    boolean setValue(String key,String value, int expireTime,
                     TimeUnit timeUnit);
}
